Wrapper 클래스
✒️ 2025-05-15 11:17 내용 수정
기본 타입의 데이터를 객체형으로 표현해야 하는 경우 사용하는 클래스
- 인스턴스에 저장된 값을 변경할 수 없다. (불변 클래스)
- 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만 참조할 수 있다.
| 기본 데이터 타입 | Wrapper 클래스 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
-
String(String 클래스)은 기본 타입이 없고 원래 클래스 형태지만, Wrapper 클래스에서 사용하는 기능을 가지고 있다.
-
박싱과 언박싱
- 박싱(Boxing) : 기본 타입의 데이터를 Wrapper 클래스의 인스턴스로 변환
- 언박싱(Unboxing) : Wrapper 클래스의 인스턴스에 저장된 값을 기본 타입의 데이터로 꺼냄
- JDK 1.5부턴 Java 컴파일러에서 자동으로 박싱과 언박싱을 지원
Integer a = Integer.valueOf(10); // 박싱
int b = 0;
b = a + 7; // Integer a가 언박싱됨
Integer c = 21; // 오토박싱
int d = c; // 오토언박싱
1. Integer 클래스
- 메서드는 Integer를 기준으로 작성했다.
- 몇몇 메서드를 제외하곤 다른 타입에도 공통으로 존재하는 메서드를 작성했다.
| 메서드 | 설명 |
|---|---|
int valueOf(int a) 등 |
정수 a 또는 문자형 타입 정수 a를 Integer로 리턴 다른 데이터 Wrapper 클래스도 동일한 메서드 형태로 사용한다. |
int parseInt(String s) 등 |
문자형 타입 정수 s의 데이터 타입을 int로 리턴 Charcter, Double, Long, Float, Boolean 등도 parseXX 형태로 사용한다. |
equals(int a) 등 |
해당 정수값이 전달 받은 a 값과 동일한지 비교 |
int compare(int a, int b) 등 |
a와 b를 비교한 결과를 반환. a > b 라면 1, a < b 라면 -1. a == b 라면 0 |
String toBinaryString(int a) |
a를 이진수로 변환하여 String으로 반환(Integer 전용) |
Integer a = new Integer(1); // JDK 1.9 이후부턴 호환성 문제로 인해 사용자제 권고
Integer b = Integer.valueOf(10);
2. Character 클래스
| 메서드 | 설명 |
|---|---|
char toLowerCase(char ch) |
문자를 소문자로 변환 |
char toUpperCase(char ch) |
문자를 대문자로 변환 |
boolean isLowerCase(char ch) |
문자가 소문자인지 확인 |
boolean isUpperCase(char ch) |
문자가 대문자인지 확인 |
boolean isDigit(char ch) |
문자가 숫자인지 확인 |
boolean isLetter(char ch) |
문자가 글자인지 확인 |
3. Optional 클래스
- T 타입의 객체를 포장해주는 Wrapper 클래스
- Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있다.
- 참고 자료 : TCPSchool Optional 클래스